#define _CRT_SECURE_NO_WARNINGS
//#include <limits.h>
//INT_MAX
//INT_MIN

//int myAtoi(char* s) {
//    while (*s == ' ')
//    {
//        s++;
//    }
//    int flag = 1;
//    if (*s == '-')
//    {
//        flag = -1;
//    }
//    if (*s == '+' || *s == '-')
//    {
//        s++;
//    }
//    long long ret = 0;
//    while (*s >= '0' && *s <= '9')
//    {
//        if (ret > INT_MAX / 10 || (ret == INT_MAX / 10 && *s > '7'))
//        {
//            return flag > 0 ? INT_MAX : INT_MIN;
//        }
//        ret = ret * 10 + *s - '0';
//        s++;
//    }
//    return (int)ret * flag;
//}

//// offsetof
//#include <stdio.h>
//#include <stddef.h>
//struct Stu
//{
//	char sex;
//	int age;
//	int C_test;
//};
//int main()
//{
//	printf("%d ", offsetof(struct Stu, sex));
//	printf("%d ", offsetof(struct Stu, age));
//	printf("%d ", offsetof(struct Stu, C_test));
//	return 0;
//}

//#include <stdio.h>
//
//int majorityElement(int* nums, int numsSize) {
//    int i = 0;
//    int ret = 0;
//    int c = 0;
//    for (i = 0; i < numsSize; i++)
//    {
//        if (c == 0)
//        {
//            ret = nums[i];
//            c++;
//        }
//        else if (nums[i] == ret)
//        {
//            c++;
//        }
//        else
//        {
//            c--;
//        }
//    }
//    return ret;
//}

int* selfDividingNumbers(int left, int right, int* returnSize) {
    int i = 0;
    *returnSize = 0;
    int* p = (int)malloc(400);
    for (i = left; i <= right; i++)
    {
        int j = i;
        int flag = 1;
        while (j)
        {
            if (i % (j % 10) != 0)
            {
                flag = -1;
                break;
            }
            j /= 10;
        }
        if (flag == 1)
        {
            *(p + *returnSize) = i;
            (*returnSize)++;
        }
    }
    return p;
}
int main()
{
    int left = 1;
    int right = 22;
    int k = 10;
    int* returnSize = &k;
    selfDividingNumbers(left, right, returnSize);
    return 0;
}